home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / STUTTGART / UNIXTOOL / GNU / PERL / PERL5SRC.ZIP / !Perl / h / av next >
Text File  |  1994-10-18  |  1KB  |  45 lines

  1. /*    av.h
  2.  *
  3.  *    Copyright (c) 1991-1994, Larry Wall
  4.  *
  5.  *    You may distribute under the terms of either the GNU General Public
  6.  *    License or the Artistic License, as specified in the README file.
  7.  *
  8.  */
  9.  
  10. struct xpvav {
  11.     char*    xav_array;    /* pointer to malloced string */
  12.     SSize_t    xav_fill;
  13.     SSize_t    xav_max;
  14.     IV        xof_off;    /* ptr is incremented by offset */
  15.     double    xnv_nv;        /* numeric value, if any */
  16.     MAGIC*    xmg_magic;    /* magic for scalar array */
  17.     HV*        xmg_stash;    /* class package */
  18.  
  19.     SV**    xav_alloc;
  20.     SV*        xav_arylen;
  21.     U8        xav_flags;
  22. };
  23.  
  24. #define AVf_REAL 1    /* free old entries */
  25. #define AVf_REIFY 2    /* can become real */
  26.  
  27. #define Nullav Null(AV*)
  28.  
  29. #define AvARRAY(av)    ((SV**)((XPVAV*)  SvANY(av))->xav_array)
  30. #define AvALLOC(av)    ((XPVAV*)  SvANY(av))->xav_alloc
  31. #define AvMAX(av)    ((XPVAV*)  SvANY(av))->xav_max
  32. #define AvFILL(av)    ((XPVAV*)  SvANY(av))->xav_fill
  33. #define AvARYLEN(av)    ((XPVAV*)  SvANY(av))->xav_arylen
  34. #define AvFLAGS(av)    ((XPVAV*)  SvANY(av))->xav_flags
  35.  
  36. #define AvREAL(av)    (AvFLAGS(av) & AVf_REAL)
  37. #define AvREAL_on(av)    (AvFLAGS(av) |= AVf_REAL)
  38. #define AvREAL_off(av)    (AvFLAGS(av) &= ~AVf_REAL)
  39. #define AvREIFY(av)    (AvFLAGS(av) & AVf_REIFY)
  40. #define AvREIFY_on(av)    (AvFLAGS(av) |= AVf_REIFY)
  41. #define AvREIFY_off(av)    (AvFLAGS(av) &= ~AVf_REIFY)
  42.  
  43. #define AvREALISH(av)    AvFLAGS(av)    /* REAL or REIFY -- shortcut */
  44.  
  45.